package jvm.FourCharacteristic;

import java.lang.ref.SoftReference;

/**
 * 软引用
 * 描述一些有用但不是必须的对象
 * 对于软引用关联的对象，在系统将要发生内存溢出之前，将会把这些对象列回收范围进行二次回收
 * 如果这次回收还没有足够内存，才会抛出内存溢出异常
 * -Xmx23M   虚拟机参数进行调整
 * 用途 ：图片缓存等类似的缓存
 */
public class softReference {
    public static void main(String[] args) {
        SoftReference<byte[]> s = new SoftReference<>(new byte[1024*1024*10]);
        System.out.println(s.get());
        System.gc();
        try {
            Thread.sleep(500);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println(s.get());

        byte[] b = new byte[1024*1024*15];
        System.out.println(s.get());
    }
}
